package com.neu.wangxiaoyang.util;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelUtil {
    private static String[] cols={"dor_no","vst_ctime","vst_ltime","vst_reson"};
    public static List<Map<String,String>> readExcel(InputStream in) throws IOException {
        List<Map<String,String>> list=new ArrayList<>();
        //我们要读取excel文件
        XSSFWorkbook work=new XSSFWorkbook(in);
        XSSFSheet sheet=work.getSheetAt(0);
        //获取中的行数
        int rows=sheet.getPhysicalNumberOfRows();
        for(int i=1;i<rows;i++){
            XSSFRow row=sheet.getRow(i);
            Map<String,String> item=new HashMap<>();
            for(int j=0;j<4;j++){
                String key=cols[j];
                //从下标为1 的列开始获取数据
                XSSFCell cell=row.getCell(j+1);//序列跳过
                String value="";
                if(cell!=null){
                    //必须要考虑每一个单元格中的数据类型
//                    if(cell.getCellTypeEnum()==CellType.NUMERIC){
//                        value+=cell.getNumericCellValue();
//                    }else{
//                        value=cell.getStringCellValue();
//                    }
                    value=cell.toString();
                }
                item.put(key,value);
            }
            list.add(item);
        }
        return list;
    }
    public static void writeExcel(OutputStream out, List<Map<String,Object>> list,
                                  String[] culName, String[] labelNames) throws IOException {
        XSSFWorkbook book=new XSSFWorkbook();
        XSSFSheet sheet=book.createSheet();
        //创建第一行
        XSSFRow row=sheet.createRow(0);
        //给第一行中的每一列设置标题
        for(int i=0;i<labelNames.length;i++){
            XSSFCell cell=row.createCell(i);
            cell.setCellValue(labelNames[i]);
        }
        //向excel中添加每一行数据,从 下标为 1 的行开始
        for(int i=0;i<list.size();i++){
            //循环一次产生一行数据
            row=sheet.createRow(i+1);
            //获取要写入行中的数据
            Map<String,Object> item=list.get(i);
            for(int j=0;j<culName.length;j++){
                XSSFCell cell=row.createCell(j);
                cell.setCellValue(item.get(culName[j]).toString());
            }
        }
        //把work写到输出流中
        book.write(out);
    }
}
